package ldh.im.dto.codec.binery;

import io.netty.buffer.ByteBuf;
import ldh.im.dto.business.P2pTextMessage;
import ldh.im.dto.enmus.MessageType;

public class P2pTextMessageCodec extends AckToCodec<P2pTextMessage> {

    @Override
    public void encode(P2pTextMessage textMessage, ByteBuf byteBuf) {
        super.encode(textMessage, byteBuf);
        byteBuf.writeLong(textMessage.getFromUserId());
        byteBuf.writeLong(textMessage.getToUserId());
        writeString(byteBuf, textMessage.getMessage());
        byteBuf.writeByte(textMessage.getMessageType().getValue());
    }

    @Override
    public void decode(P2pTextMessage textMessage, ByteBuf byteBuf) {
        super.decode(textMessage, byteBuf);
        textMessage.setFromUserId(byteBuf.readLong());
        textMessage.setToUserId(byteBuf.readLong());
        textMessage.setMessage(readString(byteBuf));
        textMessage.setMessageType(MessageType.getMessageTypeByValue(byteBuf.readByte()));
    }

    @Override
    public P2pTextMessage create() {
        return new P2pTextMessage();

    }
}
